SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO



CREATE PROCEDURE [dbo].[SP_TXMVTO_CNTB_I30]                          
/*---------------------------------------------------------------------*/                              
/*----- Empresa          : OFISIS S.A.                            -----*/                              
/*----- Cliente          : OFISIS S.A.                            -----*/                              
/*----- Sistema          : Contabilidad                           -----*/                              
/*----- Modulo           : Empresa                                -----*/                              
/*----- Programa         : Proceso de ajuste por inflacion        -----*/                              
/*----- Nombre           : SP_TXMVTO_CNTB_I30                     -----*/                              
/*----- Script           : TXMVTO_CNTB                            -----*/                              
/*----- Desarrollado     : Percy Garcia                           -----*/                              
/*----- Fecha            : 17/11/2003                             -----*/                              
/*----- Base de Datos    : MS SQL Server                          -----*/                              
/*----- Version BD       : 2000                                   -----*/                              
/*----- Invoca a SP      :                                        -----*/                              
/*---------------------------------------------------------------------*/                              
/*----- Comentarios      : Ajuste caso Ctas Inventario            -----*/                              
/*---------------------------------------------------------------------*/                              
/*---------------------------------------------------------------------*/                              
/*----- Drop Proc SP_TXMVTO_CNTB_I30                              -----*/                              
/*----- Grant ALL On SP_TXMVTO_CNTB_I30 To PUBLIC             -----*/                              
/*----- SP_TXMVTO_CNTB_I30 '01', 1, 7, '001', '095', 2004, 1,                             
2003, 12, 'MEN', 'SOL', '0000000001', 'OFISIS', '01/11/2003', 5,                         
'N', 1, '06/14/2004', 1.00, '030', '029', '028', '001', 'S', 'S', 'S',  '' -----*/                              
/*---------------------------------------------------------------------*/                              
                        
@ISCO_EMPR           TD_VC_002,                              
@INNU_CNTB_EMPR      TD_IN_001_CONT,                              
@INNU_CNTB_DEST      TD_IN_001_CONT,                              
@ISCO_UNID_CNTB      TD_VC_003,                              
@ISCO_OPRC_CNTB      TD_VC_003,                              
@INNU_ANNO           TD_IN_004_ANNO,                              
@INNU_MESE           TD_IN_002_MESE,                              
@INNU_ANNO_HIST      TD_IN_004_ANNO,                              
@INNU_MESE_HIST      TD_IN_002_MESE,                              
@ISST_TIPO_ACTU      TD_VC_003,                             
@ISCO_MONE           TD_VC_003,                             
@ISNU_ASTO           TD_VC_010,                             
@ISCO_USUA           TD_VC_008,                             
@IDFE_USUA           TD_DT_001,                             
@INNV_INFO_CNTA      TD_IN_001,                           
@ISST_FLAG           TD_VC_001,                           
@INNU_SECU           TD_IN_001,                            
@IDFE_ASTO_CNTB      TD_DT_001,                          
@INFA_ACTU_INVE      TD_NU_009_004,                          
@ISID_CTAS_INVE      TD_VC_003,                               
@ISID_CTAS_PROD      TD_VC_003,                         
@ISID_0005           TD_VC_003,                         
@ISID_COMP           TD_VC_003,                         
@ISST_GENE_ACTI      TD_VC_001,             
@ISST_GENE_LOGI      TD_VC_001,             
@ISST_GENE_PROD      TD_VC_001,             
@ISST_REEM_ASIE      TD_VC_001,          
@OSST_FLAG           TD_VC_001 OUTPUT                          
  
As                          
  
 Begin Tran SP_TXMVTO_CNTB_I30                                    
  
 Declare                               
  
 @CSCO_CNTA_EMPR     TD_VC_020,                               
 @CSST_VALO_LIMI     TD_VC_001,             
 @CSCO_CONS_REIB     TD_VC_020,                               
 @CSCO_CONS_REIR     TD_VC_020,                               
 @CNNU_MESE          TD_IN_002_MESE,                           
 @CNIM_SALD          TD_NU_016_004,                              
 @CNIM_SALD_CONS     TD_NU_016_004,                              
 @CNIM_LIMI          TD_NU_016_004,                              
 @VNFA_ACTU          TD_NU_009_004,                              
 @VNVA_REIN          TD_NU_016_004,                              
 @VNNU_IND1          TD_NU_009_004,                               
 @VNNU_IND2          TD_NU_009_004,                              
 @VNNU_SECU          TD_IN_001,                            
 @VSCO_CNTA_REIB     TD_VC_020,                             
 @VSCO_CNTA_REIR     TD_VC_020,                             
 @VSCO_CNTA_REII     TD_VC_020,                     
 @VSTI_OPER          TD_VC_003,                             
 @VSTI_OPER_0001     TD_VC_003,                             
 @VSST_FLAG          TD_VC_001,                             
 @VNIM_CALC_DIRE     TD_NU_016_004,                             
 @VSDE_GLOS          Varchar(50),                             
 @VSCO_CNTA_INVE     TD_VC_020,                          
 @VSCO_CNTA_REBI     TD_VC_020,                          
 @VSCO_CNTA_RERI     TD_VC_020,                          
 @VNIM_SALD_COMP     TD_NU_016_004,                          
 @VNIM_INVE_FINA     TD_NU_016_004,                           
 @VNIM_ACUM          TD_NU_016_004,                           
 @VNNU_MESE          TD_IN_001,                             
 @VNNU_ANNO          TD_IN_001,                             
 @VNIM_COMP_AJUS     TD_NU_016_004,                           
 @VNIM_CONS_AJUS     TD_NU_016_004,                       
                      
 @VDFE_CAMB          TD_DT_001,                       
 @VSST_LIMI_INVE     TD_VC_001,                       
 @VSCO_MONE_0001     TD_VC_003,                       
 @VSCO_MONE_BA01     TD_VC_003,                       
 @VSCO_MONE_INVE     TD_VC_003,                       
 @VSST_TIPO_INVE     TD_VC_003,                       
 @VSST_CAMB_INVE     TD_VC_003,                       
 @VNIM_LIMI_INVE     TD_NU_016_004,                       
 @VNFA_CAMB          TD_NU_015_006,                      
 @CSCO_MONE_LIMI     TD_VC_003,                        
 @CSST_TIPO_CAMB     TD_VC_003,                        
 @CSST_CNTA_CAMB     TD_VC_003,                         
 @VNVA_0001          TD_NU_015_006                        
                      
Select                            
 @VNFA_ACTU = 0,                              
 @VNVA_REIN = 0,                              
 @VNNU_IND2 = 0.00,                              
 @VNNU_IND1 = 0.00                             
  

 Select @VNNU_SECU = @INNU_SECU                          
  
 -- TABLA QUE REGISTRA LAS COMPRAS AL MES                           
 Create Table #TWSALD_MESE(NU_MESE Int NULL, IM_SALD Numeric(16, 4) NULL, IM_AJUS Numeric(16, 4) NULL)                          
  
 -- tabla 0003 graba las compras del a?o con su importe ajustado                          
 Create Table #TWSALD_MESE_0001(NU_MESE Int NULL, IM_SALD Numeric(16, 4) NULL, ST_FLAG Varchar(1) NULL, IM_AJUS Numeric(16, 4) NULL)                          
  
 Select Top 1 @VSCO_CNTA_INVE = CO_CNTA_EMPR,                           
  @VSCO_CNTA_REBI = CO_CNTA_REIB,                           
  @VSCO_CNTA_RERI = CO_CNTA_REIR,                       
  @VSST_LIMI_INVE = ST_VALO_LIMI,                       
  @VNIM_LIMI_INVE = IM_LIMI,                           
  @VSCO_MONE_INVE = CO_MONE,                       
  @VSST_CAMB_INVE = ST_CNTA_CAMB,                       
  @VSST_TIPO_INVE = (Case When ST_TIPO_CAMB = 'TRA' Then 'CIE' Else ST_TIPO_CAMB End)                       
 From TMPLAN_EMPR                           
 Where CO_EMPR = @ISCO_EMPR                          
 And NU_ANNO = 9999  
 And ST_TIPO_CUEN = 'INV'                          
 And ST_AJUS = 'S'        
      
  -- INSERTA EN TABLA TEMPORAL LAS CUENTAS AJUSTADAS   (CTA INVENTARIO)      
  Insert Into #TWPLAN_AJUS (CO_CNTA_EMPR, CO_CNTA_REII)         
  Select @VSCO_CNTA_INVE, (Case When Rtrim(IsNull(@VSCO_CNTA_REBI, '')) = '' Then @VSCO_CNTA_RERI         
  Else @VSCO_CNTA_REBI End)        
                      
 -- CARGA LAS COMPRAS DEL A?O <= INNU_MESE (CUENTAS NO SEAN DE CONSUMO E INVENTARIO ),                        
 -- pero que esten en num conta. op. inventarios                        
 Insert Into #TWSALD_MESE (NU_MESE, IM_SALD)                          
 Select t3.NU_MESE, IsNull(Sum( ((Ascii(t3.TI_OPER)/67)* IsNull(t3.IM_MVTO_CNTB, 0))), 0)                             
 - IsNull(Sum(((65/Ascii(t3.TI_OPER))* IsNull(t3.IM_MVTO_CNTB, 0))), 0)                          
 From TMPLAN_EMPR t1, TTIDEN_CNTA t2, TXMVTO_CNTB t3                          
 Where t1.CO_EMPR = @ISCO_EMPR                          
 And IsNull(t1.ST_TIPO_CUEN, '') = ''                          
 And t1.NU_ANNO = 9999  
 And t1.TI_SITU = 'ACT'                          
 And t2.CO_EMPR = t1.CO_EMPR                           
 And t2.CO_CNTA_EMPR = t1.CO_CNTA_EMPR                           
 And t2.NU_ANNO = 9999  
 And t2.NU_CNTB_EMPR = @INNU_CNTB_EMPR                          
 And t2.ID_CNTA = @ISID_COMP --@ISID_CTAS_INVE                          
 And t3.CO_EMPR = @ISCO_EMPR                           
 And t3.NU_CNTB_EMPR = @INNU_CNTB_EMPR                           
 And t3.CO_UNID_CNTB = @ISCO_UNID_CNTB                          
 And t3.NU_ANNO = @INNU_ANNO                          
 And t3.NU_MESE <= @INNU_MESE                          
 And t3.CO_CNTA_EMPR = t1.CO_CNTA_EMPR                          
 And t3.SI_MVTO_CNTB = 'APR'                          
 Group By t3.NU_MESE                          
 Order By t3.NU_MESE                          
                          
 Select @VNIM_SALD_COMP = IsNull(Sum(IM_SALD), 0)                           
 From #TWSALD_MESE                          
                          
 Insert Into #TWSALD_MESE_0001 (NU_MESE, IM_SALD, IM_AJUS) Select NU_MESE, IM_SALD, IM_AJUS From #TWSALD_MESE                            
                          
 -- CURSOR HALLA VALORES AJUSTADOS PARA LAS COMPRAS                           
 Declare CU_TWSALD_MESE_0001_1 Cursor For                           
 Select NU_MESE, IM_SALD                           
 From #TWSALD_MESE                          
 Order By NU_MESE Desc                        
                        
 Open CU_TWSALD_MESE_0001_1                              
 Fetch CU_TWSALD_MESE_0001_1 Into @CNNU_MESE, @CNIM_SALD                          
 While @@Fetch_status = 0                              
 Begin                             

 Select @VNNU_IND1 = IsNull(IN_ACTU, 1)                          
 From TTINDI_ACTU                           
 Where NU_ANNO = @INNU_ANNO                          
 And NU_MESE = @CNNU_MESE                           
                          
                          
 If @ISST_TIPO_ACTU = 'MEN'                          
 Begin                          
  If @CNNU_MESE = 1                          
   Begin                           
   Select @VNNU_MESE = 12                          
   Select @VNNU_ANNO = @INNU_ANNO - 1                          
   End                           
  Else                               Begin                           
   Select @VNNU_MESE = @CNNU_MESE - 1                          
   Select @VNNU_ANNO = @INNU_ANNO                          
   End                           
 End                           
  Else                           
   Begin                          
   Select @VNNU_ANNO = @INNU_ANNO - 1                          
   Select @VNNU_MESE = 12                          
  End                           
                           
 Select @VNNU_IND2 = IsNull(IN_ACTU, 1)                          
 From TTINDI_ACTU                           
 Where NU_ANNO = @VNNU_ANNO                          
 And NU_MESE = @VNNU_MESE                           
                          
 If @VNNU_IND2 = 0                           
   Select @VNNU_IND2 = 1                          
                          
 Update #TWSALD_MESE_0001
 Set IM_AJUS = @CNIM_SALD * Round(@VNNU_IND1 / @VNNU_IND2, 3)                           
 Where NU_MESE = @CNNU_MESE
                          
 Fetch CU_TWSALD_MESE_0001_1 Into @CNNU_MESE, @CNIM_SALD                          
 End                           
 Close CU_TWSALD_MESE_0001_1                          
 Deallocate CU_TWSALD_MESE_0001_1                          
 -- FIN CURSOR HALLA VALORES AJUSTADOS PARA LAS COMPRAS                        
                         
 Select @VSST_FLAG = 'N'                           
 Select @VSDE_GLOS = 'ASIENTO DE AJUSTE X INFLACION'            
                              
 Update #TWSALD_MESE                           
 Set IM_AJUS = t1.IM_AJUS                          
 From #TWSALD_MESE_0001 t1, #TWSALD_MESE t2          
 Where t2.NU_MESE = t1.NU_MESE                          
                        
 -- INSERT INTO TWSALD_MESE (NU_MESE, IM_SALD, IM_AJUS)  SELECT NU_MESE, IM_SALD, IM_AJUS FROM #TWSALD_MESE                        
 -- HALLANDO CONSUMO X CUENTA                          
 Declare CU_TXMVTO_CNTB_I30_1 Cursor For                           
 Select t1.CO_CNTA_EMPR, Max(t1.CO_CNTA_REIB), Max(t1.CO_CNTA_REIR),                          
 Max(t1.ST_VALO_LIMI), IsNull(Max(t1.IM_LIMI), 0),                           
 Abs(IsNull(Sum( ((Ascii(t3.TI_OPER)/67)* IsNull(t3.IM_MVTO_CNTB, 0))), 0)                             
 - IsNull(Sum(((65/Ascii(t3.TI_OPER))* IsNull(t3.IM_MVTO_CNTB, 0))), 0)),                       
 Max(t1.CO_MONE), (Case When Max(t1.ST_TIPO_CAMB) = 'TRA' Then 'CIE' Else Max(t1.ST_TIPO_CAMB) End), Max(t1.ST_CNTA_CAMB)                            
 From TMPLAN_EMPR t1, TXMVTO_CNTB t3                          
 Where t1.CO_EMPR = @ISCO_EMPR                          
 And t1.ST_TIPO_CUEN = 'CON'                    
 And t1.ST_AJUS = 'S'                
      
 And ( @ISST_REEM_ASIE = 'S' Or  ( @ISST_REEM_ASIE = 'N'         
            
 And ( (@ISST_GENE_ACTI = 'S') Or ( @ISST_GENE_ACTI = 'N'             
 And Not Exists (Select tA.CO_EMPR From TTIDEN_CNTA tA             
 Where tA.CO_EMPR = @ISCO_EMPR             
 And tA.NU_CNTB_EMPR = @INNU_CNTB_EMPR             
 And tA.ID_CNTA = @ISID_0005             
 And tA.CO_CNTA_EMPR = t1.CO_CNTA_EMPR)))            
            
 And ( (@ISST_GENE_LOGI = 'S') Or ( @ISST_GENE_LOGI = 'N'             
 And Not Exists (Select tA.CO_EMPR From TTIDEN_CNTA tA             
 Where tA.CO_EMPR = @ISCO_EMPR             
 And tA.NU_CNTB_EMPR = @INNU_CNTB_EMPR             
 And tA.ID_CNTA = @ISID_CTAS_INVE            
 And tA.CO_CNTA_EMPR = t1.CO_CNTA_EMPR)))            
            
 And ( (@ISST_GENE_PROD = 'S') Or ( @ISST_GENE_PROD = 'N'             
 And Not Exists (Select tA.CO_EMPR From TTIDEN_CNTA tA             
 Where tA.CO_EMPR = @ISCO_EMPR             
 And tA.NU_CNTB_EMPR = @INNU_CNTB_EMPR             
 And tA.ID_CNTA = @ISID_CTAS_PROD            
 And tA.CO_CNTA_EMPR = t1.CO_CNTA_EMPR)))  ))          
                
 And (IsNull(t1.CO_CNTA_REIB, '') != '' Or IsNull(t1.CO_CNTA_REIR, '') != '')                          
 And t1.NU_ANNO = 9999  
 And t1.TI_SITU = 'ACT'                          
 And t3.CO_EMPR = @ISCO_EMPR                           
 And t3.NU_CNTB_EMPR = @INNU_CNTB_EMPR                           
 And t3.CO_UNID_CNTB = @ISCO_UNID_CNTB                          
 And t3.NU_ANNO = @INNU_ANNO                          
 And t3.NU_MESE <= @INNU_MESE                          
 And t3.CO_CNTA_EMPR = t1.CO_CNTA_EMPR                    
 And t3.SI_MVTO_CNTB = 'APR'                          
 Group By t1.CO_CNTA_EMPR                         Order By t1.CO_CNTA_EMPR                          
                          
 Open CU_TXMVTO_CNTB_I30_1                          
 Fetch CU_TXMVTO_CNTB_I30_1 Into @CSCO_CNTA_EMPR, @CSCO_CONS_REIB, @CSCO_CONS_REIR,                           
 @CSST_VALO_LIMI, @CNIM_LIMI, @CNIM_SALD_CONS, @CSCO_MONE_LIMI, @CSST_TIPO_CAMB, @CSST_CNTA_CAMB                           
 While @@Fetch_status = 0                              
 Begin                             
  -- INSERTA EN TABLA TEMPORAL LAS CUENTAS AJUSTADAS   (CTA CONSUMO)      
  Insert Into #TWPLAN_AJUS (CO_CNTA_EMPR, CO_CNTA_REII)         
  Select @CSCO_CNTA_EMPR, (Case When Rtrim(IsNull(@CSCO_CONS_REIB, '')) = '' Then @CSCO_CONS_REIR         
  Else @CSCO_CONS_REIB End)        
             
 -- (TOTAL DE COMPRAS DE LOS MESES HASTA MES INGRESADO) - (CONSUMO)                          
 Select @VNIM_INVE_FINA = Abs(@VNIM_SALD_COMP) - Abs(@CNIM_SALD_CONS)                           

 -- INSERTO LOS SALDOS MENSUALES A LA TABLA QUE VA A TENER LOS IMPORTES AJUSTADOS                          
 Delete From #TWSALD_MESE_0001                          
 Insert Into #TWSALD_MESE_0001 (NU_MESE, IM_SALD, IM_AJUS) Select NU_MESE, IM_SALD, IM_AJUS From #TWSALD_MESE                          
                          
 Select @VNIM_ACUM = 0                          
                          
 -- CURSOR DE LAS COMPRAS DE LOS MESES                          
 Declare CU_TWSALD_MESE_I01 Cursor For                           
 Select NU_MESE, Abs(IM_SALD)                          
 From #TWSALD_MESE                          
 Order By NU_MESE Desc                           
                          
 Open CU_TWSALD_MESE_I01                              
 Fetch CU_TWSALD_MESE_I01 Into @CNNU_MESE, @CNIM_SALD                          
 While @@Fetch_status = 0                         
 Begin                             
 -- EVALUA VALOR INVENTARIO FINAL VS VALOR DE COMPRAS                           
  Select @VNIM_ACUM = @VNIM_ACUM + @CNIM_SALD                          
                        
  If @VNIM_ACUM > @VNIM_INVE_FINA                          
    Begin                           
    Update #TWSALD_MESE_0001                          
    Set ST_FLAG = 'S'                          
    Where NU_MESE = @CNNU_MESE                          
    Select @VNIM_ACUM = @VNIM_ACUM - @CNIM_SALD                          
    End                           
                           
  If @VNIM_ACUM = @VNIM_INVE_FINA                          
    Begin                         
    Update #TWSALD_MESE_0001                          
    Set ST_FLAG = 'S'                          
    Where NU_MESE < @CNNU_MESE           
    Break                        
    End                         
                          
 Fetch CU_TWSALD_MESE_I01 Into @CNNU_MESE, @CNIM_SALD                          
 End                           
 Close CU_TWSALD_MESE_I01                          
 Deallocate CU_TWSALD_MESE_I01                          
                     
 Delete From #TWSALD_MESE_0001                          
 Where ST_FLAG = 'S'                  
                       
 Select @VNIM_CALC_DIRE = 0                          
 If @VNIM_ACUM < @VNIM_INVE_FINA                          
   Begin                           
   Select @VNIM_CALC_DIRE = (@VNIM_INVE_FINA - @VNIM_ACUM)*@INFA_ACTU_INVE                          
   End                           
                          
 -- SACO EL INVENTARIO FINAL (@VNIM_INVE_FINA) = SUMA DE TODOS LAS COMPRAS AJUST. QUE SUMAN EL INVENTARIO FINAL...(Y)                          
 Select @VNIM_INVE_FINA = IsNull(Sum(IM_AJUS), 0) + @VNIM_CALC_DIRE From #TWSALD_MESE_0001                           
                          
 -- SACO EL CONSUMO TOTAL AJUSTADO (@VNIM_CONS_AJUS) = SUMA DE LAS COMPRAS AJUSTADAS - EL INVENTARIO FINAL ...(X)                          
 Select @VNIM_COMP_AJUS = Abs(IsNull(Sum(IM_AJUS), 0)) From #TWSALD_MESE                          
                          
  If @VNIM_INVE_FINA > 0                          
  Select @VSTI_OPER = 'CAR'               
  Else                           
  Select @VSTI_OPER = 'ABO'                          
                          
  If @VSTI_OPER = 'CAR'                            
  Select @VSTI_OPER_0001 = 'ABO'                            
                            
  If @VSTI_OPER = 'ABO'                            
  Select @VSTI_OPER_0001 = 'CAR'                            
                          
  Select @VNIM_INVE_FINA = Abs(@VNIM_INVE_FINA)                
                      
If (@VSST_LIMI_INVE = 'S' And @VNIM_LIMI_INVE > 0)                       
  Begin                                 
                        
   -- inicio de conversion                       
   -- EVALUA SI LA MONEDA DE LA CONTAB ORIGEN ES IGUAL A LA MONEDA DEL VALOR LIMITE                        
   -- SI SON DIFERENTES ENTONCES CONVIERTE EL IMPORTE LIMITE A LA MONEDA DE LA CONT. ORIGEN                        
   If @ISCO_MONE != @VSCO_MONE_INVE                      
     Begin                         
     -- saca moneda                        
     Select @VSCO_MONE_0001 = CO_MON1,                             
     @VSCO_MONE_BA01 = CO_MONE_BAS1                              
     From TMCONV_MONE                             
     Where CO_MONE_ORIG = @VSCO_MONE_INVE                             
     And CO_MONE_DEST = @ISCO_MONE                        
                                
    --- caso promedio mensual                        
    If @VSST_TIPO_INVE = 'PRO'                            
      Select @VNFA_CAMB = (Case When @VSST_CAMB_INVE = 'COM' Then FA_CAMB_CMPR                              
      Else FA_CAMB_VNTA End)                               
      From TCFACT_PRME                               
      Where CO_EMPR = @ISCO_EMPR                            
      And CO_MONE = @VSCO_MONE_0001                              
      And CO_MONE_BASE = @VSCO_MONE_BA01                            
      And NU_ANNO = @INNU_ANNO                               
      And NU_MESE = @INNU_MESE                                
                            
    --- caso cierre                         
     If @VSST_TIPO_INVE = 'CIE'                      
      Select @VNFA_CAMB = (Case When @VSST_CAMB_INVE = 'COM' Then FA_CAMB_CMPR                              
      Else FA_CAMB_VNTA End)                               
      From TCFACT_CIER                               
      Where CO_MONE = @VSCO_MONE_0001                              
      And NU_ANNO = @INNU_ANNO                               
      And NU_MESE = @INNU_MESE                             
                        
   -- @CSST_TIPO_CAMB (CIE, TRA, PRO)  @CSST_CNTA_CAMB(COM, VEN)                          
      -- ARMA FECHA EN BASE AL A?O Y MES INGRESADO                        
      Select @VDFE_CAMB  = Convert(DateTime, '01' + '/' + Convert(VarChar(2),@INNU_MESE) + '/' + CONVERT(VarChar(4),@INNU_ANNO) , 103)                      
                      
      Execute  SP_CONV_MONE_Q06  @ISCO_EMPR, @VSCO_MONE_INVE, @INNU_CNTB_DEST, '', @VSST_CAMB_INVE,               
      @VNFA_CAMB, @VDFE_CAMB, @VNIM_LIMI_INVE, 'P',@VSST_TIPO_INVE, @VNIM_LIMI_INVE OutPut, @VNVA_0001 OutPut                               
                      
   -- fin conversion                       
                      
     End    -- FIN  DE DIFERENCIA DE MONEDAS                       
                      
     If @VNIM_INVE_FINA > @VNIM_LIMI_INVE                      
  Select @VNIM_INVE_FINA = @VNIM_LIMI_INVE                      
                      
    End  -- FIN EVALUAR VALOR LIMITE                      
        
  Select @VNIM_CONS_AJUS = @VNIM_COMP_AJUS - @VNIM_INVE_FINA                          
              
  Select @VNIM_CONS_AJUS = Abs(@VNIM_CONS_AJUS)                          
                             
  -- GRABA LINEA INVENTARIO FINAL                           
  If @VNIM_INVE_FINA > 0 And @VSST_FLAG = 'N' And IsNull(@VSCO_CNTA_INVE, '') != ''             
     And (IsNull(@VSCO_CNTA_RERI, '') != '' Or IsNull(@VSCO_CNTA_REBI, '') != '')                          
  Begin                           

  Insert Into TXMVTO_CNTB                             
  (CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR,                            
  TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU, FE_DOCU, FE_DOCU_VENC, TI_CAMB, CO_MONE, FA_CAMB, FA_CAMB_DIAR,                            
  TI_OPER, IM_MVTO_ORIG,  IM_MVTO_CNTB, DE_GLOS, TI_DOCU_REFE, NU_DOCU_REFE, FE_DOCU_REFE, NO_GIRA, FE_ENTR_CHEQ,                            
  FE_PROG_CHEQ, CO_ORDE_SERV, SI_MVTO_CNTB, CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG,                            
  ST_OTRS, NU_PROC, NU_PROC_SECU, ST_IMPR_CHEQ, ST_FLAG, ST_GEST, ST_REDO, CO_TABL_ORIG, CO_CLAV_TAOR, CO_TIPO_OPER,                            
  IM_MVTO_RETE, ST_IMPR_RETE, CO_USUA_APRO, FE_USUA_APRO, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,                            
  NU_SECU_DIST, PO_DIST, TI_DOCU_DETR, NU_DOCU_DETR, FE_DOCU_DETR)                            
  Values                            
  (@ISCO_EMPR, @INNU_CNTB_DEST, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @VSCO_CNTA_INVE,                            
  NULL, NULL, NULL, NULL, NULL, NULL, 'PAC', @ISCO_MONE, 1.00, 1.00,                            
  @VSTI_OPER, Round(@VNIM_INVE_FINA, 2), Round(@VNIM_INVE_FINA, 2), @VSDE_GLOS, NULL, NULL, NULL, NULL, NULL,                            
  NULL, NULL, 'APR', NULL, NULL, NULL, NULL, NULL,                            
  NULL, 9990, 9990, 'N', NULL, 'N', 'N', NULL, NULL, NULL,                            
  NULL, 'N', @ISCO_USUA, @IDFE_USUA, @ISCO_USUA, @IDFE_USUA, @ISCO_USUA, @IDFE_USUA,                            
  NULL, NULL, NULL, NULL, NULL)                            
                        
    If @@ERROR != 0                        
      Begin                         
        Rollback Tran SP_TXMVTO_CNTB_I30                        
        Return                        
      End                        
                          
  Select @VSST_FLAG = 'S'                          
                            
  Select @VNNU_SECU = @VNNU_SECU + 1                            
                            
  If SubString(@VSCO_CNTA_INVE, 1, 1) > '5'                              
    Select @VSCO_CNTA_REII = @VSCO_CNTA_RERI                              
                              
  If SubString(@VSCO_CNTA_INVE, 1, 1) <= '5'                              
    Select @VSCO_CNTA_REII = @VSCO_CNTA_REBI                              

  Insert Into TXMVTO_CNTB                             
  (CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR,                            
  TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU, FE_DOCU, FE_DOCU_VENC, TI_CAMB, CO_MONE, FA_CAMB, FA_CAMB_DIAR,                            
  TI_OPER, IM_MVTO_ORIG,  IM_MVTO_CNTB, DE_GLOS, TI_DOCU_REFE, NU_DOCU_REFE, FE_DOCU_REFE, NO_GIRA, FE_ENTR_CHEQ,                            
  FE_PROG_CHEQ, CO_ORDE_SERV, SI_MVTO_CNTB, CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG,                            
  ST_OTRS, NU_PROC, NU_PROC_SECU, ST_IMPR_CHEQ, ST_FLAG, ST_GEST, ST_REDO, CO_TABL_ORIG, CO_CLAV_TAOR, CO_TIPO_OPER,                            
  IM_MVTO_RETE, ST_IMPR_RETE, CO_USUA_APRO, FE_USUA_APRO, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,                            
  NU_SECU_DIST, PO_DIST, TI_DOCU_DETR, NU_DOCU_DETR, FE_DOCU_DETR)                            
  Values                            
  (@ISCO_EMPR, @INNU_CNTB_DEST, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @VSCO_CNTA_REII,                            
  NULL, NULL, NULL, NULL, NULL, NULL, 'PAC', @ISCO_MONE, 1.00, 1.00,                            
  @VSTI_OPER_0001, Round(@VNIM_INVE_FINA, 2),  Round(@VNIM_INVE_FINA, 2), @VSDE_GLOS, NULL, NULL, NULL, NULL, NULL,                            
  NULL, NULL, 'APR', NULL, NULL, NULL, NULL, NULL,                            
  NULL, 9990, 9990, 'N', NULL, 'N', 'N', NULL, NULL, NULL,                         
  NULL, 'N', @ISCO_USUA, @IDFE_USUA, @ISCO_USUA, @IDFE_USUA, @ISCO_USUA, @IDFE_USUA,                            
  NULL, NULL, NULL, NULL, NULL)                            
                        
    If @@ERROR != 0                    Begin                         
        Rollback Tran SP_TXMVTO_CNTB_I30                        
        Return                        
      End                        
                            
  Select @VNNU_SECU = @VNNU_SECU + 1                            
  End                           
  -- FIN GRABA LINEA INVENTARIO FINAL                           
                          
  -- GRABA LINEA CONSUMO                          
  If @VNIM_CONS_AJUS > 0                          
  Begin                           
                      
  If (@CSST_VALO_LIMI = 'S' And @CNIM_LIMI > 0)                       
  Begin                                 
                      
   -- EVALUA SI LA MONEDA DE LA CONTAB ORIGEN ES IGUAL A LA MONEDA DEL VALOR LIMITE                        
   -- SI SON DIFERENTES ENTONCES CONVIERTE EL IMPORTE LIMITE A LA MONEDA DE LA CONT. ORIGEN                  
   If @ISCO_MONE != @CSCO_MONE_LIMI                        
     Begin                         
     -- saca moneda                        
     Select @VSCO_MONE_0001 = CO_MON1,                             
     @VSCO_MONE_BA01 = CO_MONE_BAS1                              
     From TMCONV_MONE                             
     Where CO_MONE_ORIG = @CSCO_MONE_LIMI                             
     And CO_MONE_DEST = @ISCO_MONE                        
                                  
    --- caso promedio mensual                        
    If @CSST_TIPO_CAMB = 'PRO'                            
      Select @VNFA_CAMB = (Case When @CSST_CNTA_CAMB = 'COM' Then FA_CAMB_CMPR                              
      Else FA_CAMB_VNTA End)                               
      From TCFACT_PRME                               
      Where CO_EMPR = @ISCO_EMPR                            
      And CO_MONE = @VSCO_MONE_0001                              
      And CO_MONE_BASE = @VSCO_MONE_BA01                            
      And NU_ANNO = @INNU_ANNO                               
      And NU_MESE = @INNU_MESE                                
                            
    --- caso cierre                         
     If @CSST_TIPO_CAMB = 'CIE'                            
      Select @VNFA_CAMB = (Case When @CSST_CNTA_CAMB = 'COM' Then FA_CAMB_CMPR                              
      Else FA_CAMB_VNTA End)                               
      From TCFACT_CIER                               
      Where CO_MONE = @VSCO_MONE_0001                              
      And NU_ANNO = @INNU_ANNO                               
      And NU_MESE = @INNU_MESE                             
                        
   -- @CSST_TIPO_CAMB (CIE, TRA, PRO)  @CSST_CNTA_CAMB(COM, VEN)                          
                      
      -- ARMA FECHA EN BASE AL A?O Y MES INGRESADO                        
      Select @VDFE_CAMB  = Convert(DateTime, '01' + '/' + Convert(VarChar(2),@INNU_MESE) + '/' + CONVERT(VarChar(4),@INNU_ANNO) , 103)                      
                      
      Execute  SP_CONV_MONE_Q06  @ISCO_EMPR, @CSCO_MONE_LIMI, @INNU_CNTB_DEST, '', @CSST_CNTA_CAMB,                                  
      @VNFA_CAMB, @VDFE_CAMB, @CNIM_LIMI, 'P',@CSST_TIPO_CAMB, @CNIM_LIMI OutPut, @VNVA_0001 OutPut                            
                      
      End   -- FIN CONVERSION                       
                      
  If @VNIM_CONS_AJUS > @CNIM_LIMI                       
 Select @VNIM_CONS_AJUS = @CNIM_LIMI                      
  End -- FIN EVALUAR VALOR LIMITE                       
        
  Insert Into TXMVTO_CNTB                    
  (CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR,                            
  TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU, FE_DOCU, FE_DOCU_VENC, TI_CAMB, CO_MONE, FA_CAMB, FA_CAMB_DIAR,                            
  TI_OPER, IM_MVTO_ORIG,  IM_MVTO_CNTB, DE_GLOS, TI_DOCU_REFE, NU_DOCU_REFE, FE_DOCU_REFE, NO_GIRA, FE_ENTR_CHEQ,                            
  FE_PROG_CHEQ, CO_ORDE_SERV, SI_MVTO_CNTB, CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG,                            
  ST_OTRS, NU_PROC, NU_PROC_SECU, ST_IMPR_CHEQ, ST_FLAG, ST_GEST, ST_REDO, CO_TABL_ORIG, CO_CLAV_TAOR, CO_TIPO_OPER,                            
  IM_MVTO_RETE, ST_IMPR_RETE, CO_USUA_APRO, FE_USUA_APRO, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,                            
  NU_SECU_DIST, PO_DIST, TI_DOCU_DETR, NU_DOCU_DETR, FE_DOCU_DETR)                            
  Values                            
  (@ISCO_EMPR, @INNU_CNTB_DEST, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @CSCO_CNTA_EMPR,             
  NULL, NULL, NULL, NULL, NULL, NULL, 'PAC', @ISCO_MONE, 1.00, 1.00,                            
  @VSTI_OPER, Round(@VNIM_CONS_AJUS, 2), Round(@VNIM_CONS_AJUS, 2), @VSDE_GLOS, NULL, NULL, NULL, NULL, NULL,                            
  NULL, NULL, 'APR', NULL, NULL, NULL, NULL, NULL,                            
  NULL, 9990, 9990, 'N', NULL, 'N', 'N', NULL, NULL, NULL,                            
  NULL, 'N', @ISCO_USUA, @IDFE_USUA, @ISCO_USUA, @IDFE_USUA, @ISCO_USUA, @IDFE_USUA,                            
  NULL, NULL, NULL, NULL, NULL)                            
                        
    If @@ERROR != 0                        
      Begin                         
        Rollback Tran SP_TXMVTO_CNTB_I30                        
        Return                        
      End                        
                        
  Select @VSST_FLAG = 'S'                          
                            
  Select @VNNU_SECU = @VNNU_SECU + 1                            
                            
  If SubString(@CSCO_CNTA_EMPR, 1, 1) > '5'                              
    Select @VSCO_CNTA_REII = @CSCO_CONS_REIR                              
                              
  If SubString(@CSCO_CNTA_EMPR, 1, 1) <= '5'                              
    Select @VSCO_CNTA_REII = @CSCO_CONS_REIB                              
                            
  Insert Into TXMVTO_CNTB                             
  (CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR,                            
  TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU, FE_DOCU, FE_DOCU_VENC, TI_CAMB, CO_MONE, FA_CAMB, FA_CAMB_DIAR,                            
  TI_OPER, IM_MVTO_ORIG,  IM_MVTO_CNTB, DE_GLOS, TI_DOCU_REFE, NU_DOCU_REFE, FE_DOCU_REFE, NO_GIRA, FE_ENTR_CHEQ,                            
  FE_PROG_CHEQ, CO_ORDE_SERV, SI_MVTO_CNTB, CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG,                            
  ST_OTRS, NU_PROC, NU_PROC_SECU, ST_IMPR_CHEQ, ST_FLAG, ST_GEST, ST_REDO, CO_TABL_ORIG, CO_CLAV_TAOR, CO_TIPO_OPER,                            
  IM_MVTO_RETE, ST_IMPR_RETE, CO_USUA_APRO, FE_USUA_APRO, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,                            
  NU_SECU_DIST, PO_DIST, TI_DOCU_DETR, NU_DOCU_DETR, FE_DOCU_DETR)                            
  Values                            
  (@ISCO_EMPR, @INNU_CNTB_DEST, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @VSCO_CNTA_REII,                            
  NULL, NULL, NULL, NULL, NULL, NULL, 'PAC', @ISCO_MONE, 1.00, 1.00,                            
  @VSTI_OPER_0001, Round(@VNIM_CONS_AJUS, 2), Round(@VNIM_CONS_AJUS, 2), @VSDE_GLOS, NULL, NULL, NULL, NULL, NULL,                            
  NULL, NULL, 'APR', NULL, NULL, NULL, NULL, NULL,                            
  NULL, 9990, 9990, 'N', NULL, 'N', 'N', NULL, NULL, NULL,                            
  NULL, 'N', @ISCO_USUA, @IDFE_USUA, @ISCO_USUA, @IDFE_USUA, @ISCO_USUA, @IDFE_USUA,                            
  NULL, NULL, NULL, NULL, NULL)                            
                        
    If @@ERROR != 0                        
    Begin                         
        Rollback Tran SP_TXMVTO_CNTB_I30                        
      Return                    
      End                        
                            
  Select @VNNU_SECU = @VNNU_SECU + 1                            
  End                           
  -- FIN GRABA LINEA CONSUMO                          
                          
 Fetch CU_TXMVTO_CNTB_I30_1 Into @CSCO_CNTA_EMPR, @CSCO_CONS_REIB, @CSCO_CONS_REIR,                           
 @CSST_VALO_LIMI, @CNIM_LIMI, @CNIM_SALD_CONS, @CSCO_MONE_LIMI, @CSST_TIPO_CAMB, @CSST_CNTA_CAMB                           
 End                           
 Close CU_TXMVTO_CNTB_I30_1                          
 Deallocate CU_TXMVTO_CNTB_I30_1                          
                          
 Select @OSST_FLAG = 'N'                          
                        
 If @VSST_FLAG = 'S'                          
  Select @OSST_FLAG = 'S'                          
                          
 Commit Transaction  SP_TXMVTO_CNTB_I30                        
                          
 Return                                
                              
/*--------------------------------------- Fin ---------------------------------*/                              
  






GO
